#pragma once
#include "Base.hpp"
namespace NAMESPACENAME
{
	class Rectangle
	{
	public:
		int x, y, width, height;
		int inline Right()const
		{
			return x + width;
		}
		void inline Right(int r)
		{
			width = r - x;
		}
		int inline Bottom()const
		{
			return y + height;
		}
		void inline Bottom(int b)
		{
			height = b - y;
		}
		Rectangle(int x, int y, int width, int height);
		Rectangle(const RECT&);
		Rectangle();
		operator RECT()const;
		Rectangle& operator=(const RECT&);
	};
	class KeyStates
	{
	public:
		unsigned char LeftButton : 1;
		unsigned char RightButton : 1;
		unsigned char Shift : 1;
		unsigned char Control : 1;
		unsigned char MiddleButton : 1;
		unsigned char XButton1 : 1;
		unsigned char XButton2 : 1;
	};
#define USEWCHAR
#ifdef USEWCHAR
	using Character = wchar_t;
#define STRING(s) L##s
#elif defined(USEUTF8)
	using Character = char8_t;
#define STRING(s) u8##s
#elif defined(USEUTF16)
	using Character = char16_t;
#define STRING(s) u##s
#elif defined(USEUTF32)
	using Character = char32_t;
#define STRING(s) U##s
#elif defined(USEASCII)
	using Character = char;
#define STRING(s) s
#endif
}